From 0b442a82e8824bec5cbf59dec1a1371131bc8f2d Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 14 Feb 2013 20:18:42 -0800 Subject: [PATCH] [BagOStuff] De-breakified cas() for SqlBagOStuff. * Seemed to be a functional merge conflict with sharding code. Change-Id: I1e49790f6b82b09ea2cd6606ca918f0a620a191f --- includes/objectcache/SqlBagOStuff.php | 34 ++++++++++++++------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php index bae1b7525d..5cc02d35a8 100644 --- a/includes/objectcache/SqlBagOStuff.php +++ b/includes/objectcache/SqlBagOStuff.php @@ -324,28 +324,28 @@ class SqlBagOStuff extends BagOStuff { * @return bool */ public function cas( $casToken, $key, $value, $exptime = 0 ) { - $db = $this->getDB(); - $exptime = intval( $exptime ); - - if ( $exptime < 0 ) { - $exptime = 0; - } + list( $serverIndex, $tableName ) = $this->getTableByKey( $key ); + try { + $db = $this->getDB( $serverIndex ); + $exptime = intval( $exptime ); - if ( $exptime == 0 ) { - $encExpiry = $this->getMaxDateTime(); - } else { - if ( $exptime < 3.16e8 ) { # ~10 years - $exptime += time(); + if ( $exptime < 0 ) { + $exptime = 0; } - $encExpiry = $db->timestamp( $exptime ); - } - try { + if ( $exptime == 0 ) { + $encExpiry = $this->getMaxDateTime( $db ); + } else { + if ( $exptime < 3.16e8 ) { # ~10 years + $exptime += time(); + } + $encExpiry = $db->timestamp( $exptime ); + } $db->begin( __METHOD__ ); // (bug 24425) use a replace if the db supports it instead of // delete/insert to avoid clashes with conflicting keynames $db->update( - $this->getTableByKey( $key ), + $tableName, array( 'keyname' => $key, 'value' => $db->encodeBlob( $this->serialize( $value ) ), @@ -354,7 +354,9 @@ class SqlBagOStuff extends BagOStuff { array( 'keyname' => $key, 'value' => $db->encodeBlob( $this->serialize( $casToken ) ) - ), __METHOD__ ); + ), + __METHOD__ + ); $db->commit( __METHOD__ ); } catch ( DBQueryError $e ) { $this->handleWriteError( $e ); -- 2.20.1